package jwd.util

import com.google.gson.Gson
import com.google.gson.JsonArray
import com.google.gson.JsonElement
import com.google.gson.JsonParser

import java.util.ArrayList

/**
 * Created by udi on 17-8-4.
 */


val mGson = Gson()

inline fun <reified T> String.parseJson(): T? {
    if (this.isEmpty()) return null
    return mGson.fromJson<T>(this, T::class.java)
}

/**
 * 将json字符串转化成实体对象
 * @param json
 * *
 * @param classOfT
 * *
 * @return
 */
fun <T> String.parseJson(classOfT: Class<T>): T? {
    if (this.isEmpty()) return null
    return mGson.fromJson(this, classOfT)
}

/**
 * 将对象准换为json字符串 或者 把list 转化成json
 * *
 * @param <T>
 * *
 * @return
</T> */
fun <T> T?.stringify(): String {
    if (this == null) return ""
    return mGson.toJson(this)
}

/**
 * 把json 字符串转化成list
 * @param json
 * *
 * @param cls
 * *
 * @param <T>
 * *
 * @return
</T> */
fun <T> String.parseJsonList(cls: Class<T>): List<T> {
    val list = ArrayList<T>()
    if (this.isEmpty()) return list;
    val array = JsonParser().parse(this).asJsonArray
    for (elem in array) {
        list.add(mGson.fromJson(elem, cls))
    }
    return list
}

